package 链表;

import Utils.ListNode;

/**
 * @author: TTDB
 * @create: 2025/9/16
 */
public class swapPairs {
    public ListNode swapPairs(ListNode head) {
        //两两交换链表节点----------------这个就是k个一组反转列表的缩减版

        if (head == null || head.next == null) {
            return head;
        }
        //1-2-3-4   ---------->  2 - 1 - 4 - 3
        //先不看3，4，交换1和2，那么交换1，2怎么做
        //保存2的后驱，让1指向2的后驱，2指向1
        //那么2的后驱是不是后面交换的，那么就开始了递归。
        ListNode newHead = head.next;
        head.next = swapPairs(newHead.next);
        newHead.next = head;
        return newHead;
    }
}
